$(function() {
	var Holly_PPT = {
		list : null,		//缩略图列表
		itemWidth : 0,		//每个单元的宽度
		speed : 10,			//滚动速度
		clickDelay : 20,	//滚动间隔，20毫秒
		leftMax : 0,		//最大偏移量
		classCur : 'act',	//当前样式名
		showCenterPos : 3,	//显示中心位置
		running : false,
		clickInterval : null,
		init : function(opt) {
			var mask = opt.mask ? $(opt.mask) : null;
			if(!mask || !mask.length) {
				alert('没找到ID');
				return false;
			}
			this.speed = opt.speed || 10;
			this.clickDelay = opt.clickDelay || 20;
			
			this.list = mask.find('ul');
			var _self = this;
			var items = this.list.find('li').click(function() {
				_self.itemClick(this);
			});
			var itemFrist = items.eq(3);
			this.itemWidth = opt.itemWidth || 
				itemFrist.outerWidth() + parseInt(itemFrist.css('margin-left')) + parseInt(itemFrist.css('margin-right'));
				
			var showNum = Math.ceil(mask.width()/this.itemWidth);
			this.showCenterPos = Math.ceil(showNum/2);
			this.leftMax = (items.length - showNum) * this.itemWidth;
			//固定UL宽度和位置
			this.list.css({'width' : items.length * this.itemWidth + 10, 'left' : 0});
			
			//列表左右按钮
			var listBtnLeft = opt.listBtnLeft ? $(opt.listBtnLeft) : $('.left');
			var listBtnRight = opt.listBtnRight ? $(opt.listBtnRight) : $('.right');
			listBtnLeft.click(function() {
				var itemTag = $('li:has(a.'+ _self.classCur +')', _self.list).prev();
				if(itemTag.length) {
					itemTag.trigger('click');
				}
			});
			listBtnRight.click(function() {
				var itemTag = $('li:has(a.'+ _self.classCur +')', _self.list).next();
				if(itemTag.length) {
					itemTag.trigger('click');
				}
			});
			
			//大图左右按钮
			var bigBtnLeft = opt.bigBtnLeft ? $(opt.bigBtnLeft) : $('.mouseoverleft');
			var bigBtnRight = opt.bigBtnRight ? $(opt.bigBtnRight) : $('.mouseoverright');
			bigBtnLeft.click(function() {
				var itemTag = $('li:has(a.'+ _self.classCur +')', _self.list).prev();
				if(itemTag.length) {
					itemTag.trigger('click');
				}
			}).mouseenter(function() {
				if($('li:has(a.'+ _self.classCur +')', _self.list).index() != 0) {
					$(this).find('span').show();
				}
			}).mouseleave(function() {
				$(this).find('span').hide();
			});
			bigBtnRight.click(function() {
				var itemTag = $('li:has(a.'+ _self.classCur +')', _self.list).next();
				if(itemTag.length) {
					itemTag.trigger('click');
				}
			}).mouseenter(function() {
				if($('li:has(a.'+ _self.classCur +')', _self.list).index() != _self.list.find('li').length - 1) {
					$(this).find('span').show();
				}
			}).mouseleave(function() {
				$(this).find('span').hide();
			});
		},
		itemClick : function(item) {
			var absCenterPos = Math.ceil(Math.abs(parseInt(this.list[0].style.left))/this.itemWidth) + this.showCenterPos;
			var dir = absCenterPos - ($(item).index() + 1);
			this.go(dir, $(item));
		},
		go : function(dir, itemTag) {
			if(this.running) {
				return false;
			}
			this.running = true;
			var leftTag = parseInt(this.list[0].style.left) + this.itemWidth * dir;
			if(leftTag > 0) {
				leftTag = 0;
			}else if(leftTag < -this.leftMax) {
				leftTag = -this.leftMax;
			}
			var speed = this.speed * dir;
			var _self = this;
			this.clickInterval = setInterval(function() {
				_self.run(leftTag, speed, dir > 0 ? 1 : -1);
			}, this.clickDelay);
			
			this.setBigImg(itemTag);
			this.setListBtn(itemTag);
			this.setBigBtn();
		},
		run : function(leftTag, speed, dir) {
			var leftCur = parseInt(this.list[0].style.left);
			//左边临界点
			if(dir > 0 && leftCur >= 0) {
				return this.setLast(0);
			}
			//右边临界点
			if(dir < 0 && Math.abs(leftCur) >= this.leftMax) {
				return this.setLast(-this.leftMax);
			}
			//最后一步整除处理
			var diff = Math.abs(leftTag - leftCur);
			if(diff <= this.speed) {
				return this.setLast(leftTag);
			}
			this.list.css('left', leftCur + speed);
		},
		setLast : function(leftVal) {
			this.list.css('left', leftVal);
			clearInterval(this.clickInterval);
			this.running = false;
			return false;
		},
		setBigImg : function(itemTag) {
			this.list.find('a').removeClass(this.classCur);
			itemTag.find('a').addClass(this.classCur);
			$('.bigpicshow img').hide().eq(itemTag.index()).show();
		},
		setListBtn : function(itemTag) {
			if(0 == itemTag.index()) {
				$('.left').addClass('cur');
				$('.right').removeClass('cur');
			}else if(this.list.find('li').length - 1 == itemTag.index()) {
				$('.right').addClass('cur');
				$('.left').removeClass('cur');
			}else {
				$('.left, .right').removeClass('cur');
			}
		},
		setBigBtn : function() {
			if($('li:has(a.'+ this.classCur +')', this.list).index() == 0) {
				$('.mouseoverleft span').hide();
			}
			if($('li:has(a.'+ this.classCur +')', this.list).index() == this.list.find('li').length - 1) {
				$('.mouseoverright span').hide();
			}
		}
	};
	
	Holly_PPT.init({
		mask : '#scroll_mask',
		listBtnLeft : '.left',
		listBtnRight : '.right',
		bigBtnLeft : '.mouseoverleft',
		bigBtnRight : '.mouseoverright',
		clickDelay : 20,
		itemWidth : 170, //IE9获取margin有误差
		speed : 10
	});
});